package io.kiki.sba.registry.server.clientInterface.converter.pb;

import io.kiki.sba.registry.common.model.client.pb.BaseRegisterPb;
import io.kiki.sba.registry.common.model.client.pb.SubscriberRegisterPb;
import io.kiki.sba.registry.core.model.SubscriberRegister;


public final class SubscriberRegisterConvertor {
    private SubscriberRegisterConvertor() {
    }

    public static SubscriberRegister convert2Java(SubscriberRegisterPb subscriberRegisterPb) {

        if (subscriberRegisterPb == null) {
            return null;
        }

        SubscriberRegister subscriberRegister = new SubscriberRegister();

        subscriberRegister.setAppName(subscriberRegisterPb.getBaseRegister().getAppName());
        subscriberRegister.setClientId(subscriberRegisterPb.getBaseRegister().getClientId());
        subscriberRegister.setDataId(subscriberRegisterPb.getBaseRegister().getDataId());
        subscriberRegister.setDataInfoId(subscriberRegisterPb.getBaseRegister().getDataInfoId());
        subscriberRegister.setEventType(subscriberRegisterPb.getBaseRegister().getEventType());
        subscriberRegister.setGroup(subscriberRegisterPb.getBaseRegister().getGroup());
        subscriberRegister.setZone(subscriberRegisterPb.getBaseRegister().getZone());
        subscriberRegister.setInstanceId(subscriberRegisterPb.getBaseRegister().getInstanceId());
        subscriberRegister.setIp(subscriberRegisterPb.getBaseRegister().getIp());
        subscriberRegister.setPort(subscriberRegisterPb.getBaseRegister().getPort());
        subscriberRegister.setProcessId(subscriberRegisterPb.getBaseRegister().getProcessId());
        subscriberRegister.setRegistId(subscriberRegisterPb.getBaseRegister().getRegistId());
        subscriberRegister.setTimestamp(subscriberRegisterPb.getBaseRegister().getTimestamp());
        subscriberRegister.setVersion(subscriberRegisterPb.getBaseRegister().getVersion());

        subscriberRegister.setAttributes(subscriberRegisterPb.getBaseRegister().getAttributesMap());
        subscriberRegister.setAcceptEncoding(subscriberRegisterPb.getAcceptEncoding());
        subscriberRegister.setScope(subscriberRegisterPb.getScope());
        subscriberRegister.setAcceptMulti(subscriberRegisterPb.getAcceptMulti());
        return subscriberRegister;
    }

    public static SubscriberRegisterPb convert2Pb(SubscriberRegister subscriberRegisterJava) {

        if (subscriberRegisterJava == null) {
            return null;
        }

        SubscriberRegisterPb.Builder builder = SubscriberRegisterPb.newBuilder();

        BaseRegisterPb.Builder baseRegisterBuilder = BaseRegisterPb.newBuilder();

        baseRegisterBuilder.setAppName(subscriberRegisterJava.getAppName()).setClientId(subscriberRegisterJava.getClientId()).setDataId(subscriberRegisterJava.getDataId()).setDataInfoId(subscriberRegisterJava.getDataInfoId()).setEventType(subscriberRegisterJava.getEventType()).setGroup(subscriberRegisterJava.getGroup()).setZone(subscriberRegisterJava.getZone()).setInstanceId(subscriberRegisterJava.getInstanceId()).setIp(subscriberRegisterJava.getIp()).setPort(subscriberRegisterJava.getPort()).setProcessId(subscriberRegisterJava.getProcessId()).setRegistId(subscriberRegisterJava.getRegistId()).setVersion(subscriberRegisterJava.getVersion()).setTimestamp(subscriberRegisterJava.getTimestamp()).putAllAttributes(subscriberRegisterJava.getAttributes());

        builder.setScope(subscriberRegisterJava.getScope()).setBaseRegister(baseRegisterBuilder.build()).setAcceptEncoding(subscriberRegisterJava.getAcceptEncoding() == null ? "" : subscriberRegisterJava.getAcceptEncoding());
        return builder.build();
    }
}
